Skip to content

Patch codegen issues enough to make tests pass in experimental analysis #14660

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

cameel
Copy link
Member

@cameel cameel commented Oct 31, 2023

Merging this should let us finally get rid of the hack that disables the codegen in syntax tests. Note that the codegen won't actually run until we remove the hack commit from newAnalysis branch.

The PR patches two issues that prevent all current test cases from pass through codegen successfully:

  1. builtin_type_definition.sol: Calls via function pointers seem unimplemented. I added a proper solUnimplementedAssert() against that.
  2. import_and_call_stdlib_function.sol: Codegen unconditionally assigns function result to a variable even if the function does not return anything (which is invalid Yul). Added an if to skip that for functions without return parameters.

These are not proper fixes, but should be good enough until we address the issues properly. Especially the second one should be addressed by #14620.

@cameel cameel requested a review from ekpyron October 31, 2023 13:10
@cameel cameel self-assigned this Oct 31, 2023
@cameel
Copy link
Member Author

cameel commented Oct 31, 2023

Argh, looks like I somehow missed semanticTests/experimental/type_class.sol. That one is failing too so going back to draft until I address that.

@cameel cameel marked this pull request as draft October 31, 2023 13:16
@cameel cameel force-pushed the new-analysis-patch-codegen-issues-to-make-tests-pass branch from e78811e to 82d27c8 Compare October 31, 2023 13:58
@cameel
Copy link
Member Author

cameel commented Oct 31, 2023

Looks like it's because the new-style not only have a separate return parameter list but the original list is no longer populated. So returnParameterList() is always empty and I should have used experimentalReturnExpression() instead. Should work now.

@cameel cameel marked this pull request as ready for review October 31, 2023 14:01
@cameel cameel force-pushed the new-analysis-patch-codegen-issues-to-make-tests-pass branch from 82d27c8 to 71d8fe3 Compare November 1, 2023 10:26
@cameel cameel merged commit 6409d81 into newAnalysis Nov 1, 2023
@cameel cameel deleted the new-analysis-patch-codegen-issues-to-make-tests-pass branch November 1, 2023 11:28
cameel added a commit that referenced this pull request Dec 8, 2023
…sues-to-make-tests-pass

Patch codegen issues enough to make tests pass in experimental analysis
cameel added a commit that referenced this pull request Dec 13, 2023
…sues-to-make-tests-pass

Patch codegen issues enough to make tests pass in experimental analysis
cameel added a commit that referenced this pull request Dec 13, 2023
…sues-to-make-tests-pass

Patch codegen issues enough to make tests pass in experimental analysis
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants